# day_002
# 元组 tuple
# 1,元组 tuple,使用（）
# 2，元组和列表非常相似，都可以存储多个数据，都可以存储任意类型的数据
# 3，区别就是 元组中的数据不能修改，列表中可以修改
# 4.因为元组中的数据不能修改，所以只有 查询方法，如index,count,支持下标和切片
# 5.元组，主要用于传参和返回值
# 6，组包（pack) 和 拆包（解包 unpack)
# 7. 定义元组时可不用写小括号

# 1\类实例化方式
# 定义空元组（不重要）
tuple1 = tuple()
print(type(tuple1), tuple1)
# 类型转换，将列表（其他可迭代类型(能用for循环的：容器)）转换为元组
tuple2 = tuple([1, 2, 3])
print(tuple2)
# <class 'tuple'> ()
# (1, 2, 3)
tuple3 = tuple('1234')
print(tuple3)
# ('1', '2', '3', '4')
# 2\直接使用（）定义
tuple4 = ()
tuple5 = (1, 2, 'hello', 3.14, True)
print(tuple4)
print(tuple5)
print(tuple5[2])
# 定义只有一个数据的元组，数据后必须有一个逗号，要不然就是int型数据
tuple6 = (10,)
print(tuple6)
# ()
# (1, 2, 'hello', 3.14, True)
# hello
# (10,)
# index和count的使用
tuple7 = (1, 2, 3, 4, 52, 2, 2, 5)
print(tuple7.count(2))  # 3
print(tuple7.index(4))  # 3 index指元素4的下标，取的是下标，不是指取下标4的值
print(tuple7[4])  # 直接使用下标查值

# 1\在定义元组时，小括号可以省略不写
# 2\组包(pack),将多个数据值组成元组的过程 a = 1,2 等价于 a= (1,2)
# 3\拆包(解包 unpack), 将容器中多个数据 分别给到多个变量,需要保证容器中元素的个数和变量
#   的个数保持一致
a = 10
b = 20
c = b,a
print(c)    #(20,10)
a,b = c
print(a,b)  #20 10

a,b = b,a
print(a,b)  #10 20
# 拆包是容器就可以
x,y,z = 'abc'
print(x,y,z)
# a b c


